// if() {} else {}
// for() {}

// 代码块 { .... }
// 1. var 没有块级作用域
// 2. var 声明的变量在作用域开头会被处理（声明会提升，赋值不会）
// 3. var 允许重复声明变量

// let 为变量新增了块级作用域
// const x = 12 // 声明常量，不可变的量
// x = 34
// console.log(x)
// const PHONE = "13200998877"
// const PHONE = "110"

/*
const obj = {
	name: "张三"
}
obj.name = "李四"
console.log(obj)
*/

/*
js基本数据类型 | 值类型
number, string, boolean, null, undefined

复杂类型 | 引用类型（存的是内存地址）
object ({}, []), function

let x = 123
let y = {} // 内存地址
*/

// 存储的内存地址不能改
/*
const obj1 = {
	name: "张三"
}
// obj1 = 0x00fab1
const obj2 = obj1
// obj2 = 0x00fab1
obj2.name = "李四"

console.log(obj1.name) // 李四
// obj2 = 123
*/
// var x = "123"
// var x = "hello"
// let x = "123"
// let x = "hello"
// console.log(x)


// for(var i = 0; i < 10; i++) {
// for(let i = 0; i < 10; i++) {}
// console.log(i)


/*
console.log(x)

function sayHi() {
	// var msg
	// msg = "hello es6"
	if(false) {
		let msg = "hello var"
	}
	console.log(msg)
	// let msg = "hello var"
}
sayHi()
var x


if(true) {
	// var test = true
	let test = true
	// ...
}
console.log(test) // 
*/

// function作用域：局部变量，全局变量
/*
function sayHi() {
	// let msg = "hello es6"
	var msg = "hello es6"
	console.log(msg)
}
sayHi()
console.log(msg)
*/


const obj1 = {
	name: "张三",
	aga: 23,
	sub: {
		a: "aaa"
	}
}

/*
// 浅拷贝
const tempObj = {}
// for(let item of obj1) {
for(let item in obj1) {
	// console.log(item, obj1[item])
	tempObj[item] = obj1[item]
	// tempObj.age = 23
}*/

// 拷贝：深拷贝，浅拷贝
// const obj2 = tempObj

// 深拷贝
const obj2 = JSON.parse(JSON.stringify(obj1))

// 修改obj2不影响obj1
obj2.name = "李四"
// console.log(obj1.name) // 李四
obj2.sub.a = "a已修改"
// console.log(obj1.sub.a) // 李四

// console.log(obj1)
// console.log(obj2)



const arr1 = ["奔驰", "宝马", "奥迪", ["本田", "马自达", "丰田"]]
const arr2 = arr1
// 操作arr2不要影响arr1
// 浅拷贝, 深拷贝
arr2[2] = "OOOO"
arr2[3][1] = "三菱"
console.log(arr1) // ["奔驰", "宝马", "奥迪"]
console.log(arr2) // ["奔驰", "宝马", "OOOO"]

